<?php
/**
 * Created by PhpStorm.
 * User: Season
 * Date: 2018/10/9
 * Time: 16:42
 */

namespace app\api\validate;

use app\lib\exception\ParameterExcption;
use think\Request;
use think\Validate;
class BaseValidate extends Validate
{
    public function goCheck(){
        //获取http传入参数
        $rq = Request::instance ();
        $params = $rq->param ();
        //对参数做校验
        $result = $this->batch()->check ($params);
        if(!$result){
            $e = new ParameterExcption([
                'msg'=>$this->error
            ]);
            throw $e;
        }
        else{
            return true;
        }
    }

    protected function isPositiveInteger($value){
        if(is_numeric ($value) && is_int ($value+0) && ($value+0)>0)return true;
        else return false;
    }

    protected function isNotEmpty($value){
        if(!empty($value))return true;
        else return false;
    }

    public function getDataByRule($arrays){
        if(array_key_exists ('uid',$arrays)|
           array_key_exists ('user_id',$arrays)){
            throw new ParameterExcption([
                'msg' => '参数种包含有非法的参数名user_id或者uid'
                                        ]);
        }
        $newArray = [];
        foreach ($this->rule as $key => $value){
            $newArray[$key] = $arrays[$key];
        }
        return $newArray;
    }

    //没有使用TP的正则验证，集中在一处方便以后修改
    //不推荐使用正则，因为复用性太差
    //手机号的验证规则
    protected function isMobile($value)
    {
        $rule = '^1(3|4|5|7|8)[0-9]\d{8}$^';
        $result = preg_match($rule, $value);
        if ($result) {
            return true;
        } else {
            return false;
        }
    }
}